package Buildings.net.client;
import java.net.*;
import java.io.*;
import Interfaces.*;
import Buildings.*;
import Buildings.dwelling.hotel.*;
import Buildings.dwelling.*;
import Buildings.office.*;
public class BinaryClient {
    private static final int port=4446;
    public static void main(String arg[]){
        Socket transport=null;
        DataInputStream in=null;
        DataOutputStream out=null;
        
        String q,w,v;
        //buildings.txt,buildingsType.txt,buildingsCash.txt
        q="buildings.txt";
        w="buildingsType.txt";
        v="buildingsCash.txt";
        System.out.println("Клиентское приложение - бинарный");
        try{
            transport=new Socket("127.0.0.1",port);
            in=new DataInputStream(transport.getInputStream());
            out=new DataOutputStream(transport.getOutputStream());
        }catch(UnknownHostException e){
            System.out.println("Ошибка соединения!");
            System.exit(1);
        }catch (IOException ex){
           System.out.println("Ошибка в вводе выводе!");
           System.exit(1);
        }
        
        try{
        BufferedReader readFileBuilding=new BufferedReader(new FileReader(q));//(new FileReader(arg[0]));читаем структуру задния
        BufferedReader readFileBuildingType=new BufferedReader(new FileReader(w));//(new FileReader(arg[1]));читаем тип здания
        PrintWriter printCashToFile=new PrintWriter(new FileWriter(v));//(new FileWriter(arg[2]))записываем цену здания (или арест)
        
        String cashS;
        byte []cashB;
        String type=readFileBuildingType.readLine();
        String bild=readFileBuilding.readLine();
        String empty="";

        while(type!=null && bild!=null){
           if(type.equalsIgnoreCase(empty)){
               while(type.equalsIgnoreCase(empty)){
                    type=readFileBuildingType.readLine();
                    if(type==null)break;
               }
           }
           if(bild.equalsIgnoreCase(empty)){
               while(bild.equalsIgnoreCase(empty)){
                    bild=readFileBuilding.readLine();
                    if(type==null)break;
               }
           }
           if(type==null)break;
           System.out.println("Прочитан "+type+" "+bild);
           byte typ[]=type.getBytes();
           byte bil[]=bild.getBytes();
           out.write(typ.length);//посылаем длинну
           out.write(typ);//отправляем биты
           out.write(bil.length);
           out.write(bil);
           int n=in.read();//считываем размер
           cashB=new byte[n];
           in.read(cashB);//считываем биты ответа
           try {
                cashS=new String(cashB, "cp1251");
                printCashToFile.println(cashS);
                System.out.println("Считано "+cashS);
           } catch (UnsupportedEncodingException ex) {
           }
           type="";
           bild="";
        }
        byte []fg="END".getBytes();
        out.write(fg.length);
        out.write(fg);
        printCashToFile.close();
        System.out.println("Записан конец");
        }catch (IOException openFile){
           System.out.println("Ошибка открытия файлов!");
        } 
        try{
        out.close();
        in.close();
        transport.close();
        }catch (IOException Clouse){
           System.out.println("Ошибка закрытия на клиенте!");
        } 
    } 
}
